package com.jzo2o.foundations.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.common.model.Result;
import com.jzo2o.foundations.model.domain.Serve;
import com.jzo2o.foundations.model.dto.request.ServePageQueryReqDTO;
import com.jzo2o.foundations.model.dto.request.ServeUpsertReqDTO;
import com.jzo2o.foundations.model.dto.response.ServeAggregationSimpleResDTO;
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
import com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO;
import com.jzo2o.foundations.model.dto.response.ServeResDTO;

import java.math.BigDecimal;
import java.util.List;

public interface IServeRegionService extends IService<Serve> {

    /**
     * 分页查询区域服务详情
     * @param reqDTO
     * @return
     */
    PageResult<ServeResDTO> pageResult(ServePageQueryReqDTO reqDTO);

    /**
     * 新增区域服务项
     * @param reqDTOS
     * @return
     */
    void addServeRegion(List<ServeUpsertReqDTO> reqDTOS);

    /**
     * 删除区域内某服务项，根据服务项id
     * @param id
     */
    void deleteById(String id);

    /**
     * 修改价格
     * @param id
     * @param price
     */
    void updatePriceById(String id, BigDecimal price);

    /**
     * 上架
     * @param id
     */
    void onSale(String id);

    /**
     * 下架
     * @param id
     */
    void offSale(String id);

    /**
     * 设置热门
     * @param id
     */
    void onHot(String id);

    /**
     * 取消热门
     * @param id
     */
    void offHot(String id);

    /**
     * 根据区域id查询所有服务分类以及服务内容
     * 只保留前两个分类、以及分类中前四个服务返回
     * @param regionId
     * @return
     */
    List<ServeCategoryResDTO> getServeCategoryList(String regionId);

    /**
     * 查询热门服务，只返回排名第一的
     * @param regionId
     * @return
     */
    List<ServeAggregationSimpleResDTO>  getHotServeList(String regionId);

    /**
     *   全部服务列表
     * @param regionId
     * @return
     */
    List<ServeAggregationTypeSimpleResDTO> getAllTypeByRegionId(Long regionId);

    /**
     *   查询服务详情
     * @param id
     * @return
     */
    ServeAggregationSimpleResDTO getServeDetailById(Long id);
}
